访问电脑版页面

导航:老古开发网手机版STM32单片机的时钟

STM32F30X时钟初始化为HSI 64Mhz,并使用PLLCLK作为系统时钟

导读:void SYSCLK_Config_HSI_64Mhz(void) { __IO uint32_t StartUpCounter = 0, HSIStatus = 0; /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ /* Enable HSI */ RCC->CR
关键字:
时钟初始化,系统时钟,stm32f30x,

void SYSCLK_Config_HSI_64Mhz(void)

{

__IO uint32_t StartUpCounter = 0, HSIStatus = 0;

/* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/

/* Enable HSI */

RCC->CR |= ((uint32_t)RCC_CR_HSION);

/* Wait till HSI is ready and if Time out is reached exit */

do

{

HSIStatus = RCC->CR & RCC_CR_HSIRDY;

StartUpCounter++;

} while((HSIStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));

if ((RCC->CR & RCC_CR_HSIRDY) != RESET)

{

HSIStatus = (uint32_t)0x01;

}

else

{

HSIStatus = (uint32_t)0x00;

}

if (HSIStatus == (uint32_t)0x01)

{

/* Enable Prefetch Buffer */

FLASH->ACR |= FLASH_ACR_PRFTBE;

/* Flash 2 wait state */

FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY);

FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_1;

/* HCLK = SYSCLK */

RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;

/* PCLK2 = HCLK */

RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;

/* PCLK1 = HCLK */

RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;

/* Clear PLL Source [16] and Multiplier [21:18] bits */

RCC->CFGR &= ~(RCC_CFGR_PLLMULL | RCC_CFGR_PLLSRC);

/* PLL configuration: PLLCLK = HSI / 2 * 16 = 64 MHz */

RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSI_Div2 | RCC_CFGR_PLLMULL16);

/* Enable PLL */

RCC->CR |= RCC_CR_PLLON;

/* Wait till PLL is ready */

while((RCC->CR & RCC_CR_PLLRDY) == 0)

{

}

/* Select PLL as system clock source */

RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));

RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;

/* Wait till PLL is used as system clock source */

while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08)

{

}

}

else

{ /* If HSE fails to start-up, the application will have wrong clock

configuration. User can add here some code to deal with this error */

}

}


来源:互联网   作者:karen  2018/11/8 13:20:01
栏目: [ STM32单片机的时钟]

相关阅读

STM32单片机的5个时钟源解析

STM32的时钟配置

STM32F4时钟系统原理图解析

STM32值系统时钟初始化程序设计

基于STM32单片机建立系统时钟的设计方案

STM32单片机的外部时钟晶振该如何选择频率

LinkedInSTM32F4时钟系统初始化的程序代码分享

STM32的各种时钟系统的应用解析

STM32不使用外部晶振的接法

STM32F4的时钟系统的实现方法

STM32 时钟配置方法

STM32-系统时钟

stm32变更外部晶振时钟配置

STM32单片机外部晶振配置时钟设置

stm32f 查看系统时钟配置

基于STM32时钟系统的开发及配置

STM32时钟配置设计中的常见问题解析

基于LinkedInSTM32F4时钟系统初始化设置

STM32基于官方库函数的时钟配置

STM32F30X时钟初始化为HSI 64Mhz,并使用PLLCLK作为系统时钟